CMake使用教程.docx 您所在的位置:网站首页 cmake 指定安装目录 CMake使用教程.docx

CMake使用教程.docx

2023-04-02 23:18| 来源: 网络整理| 查看: 265

CMake使用教程.docx

《CMake使用教程.docx》由会员分享,可在线阅读,更多相关《CMake使用教程.docx(12页珍藏版)》请在冰豆网上搜索。

CMake使用教程.docx

CMake使用教程

CMake使用教程

CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。

通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。

CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(makeinstall)、测试安装的程序是否能正确执行(maketest,或者ctest)、生成当前平台的安装包(makepackage)、生成源码包(makepackage_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。

如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。

总之,CMake是一个非常强大的编译自动配置工具,支持各种平台,KDE也是用它编译的,感兴趣的可以试用一下。

准备活动:

(1)安装cmake。

下载地址:

http:

//www.cmake.org/cmake/resources/software.html

根据自己的需要下载相应的包即可,Windows下可以下载zip压缩的绿色版本,还可以下载源代码。

(2)运行cmake的方法。

(GUI、命令行)

http:

//www.cmake.org/cmake/help/runningcmake.html

CMake使用步骤:

运行GUI的cmake界面:

cmake-2.8.1-win32-x86/bin/cmake-gui.exe

执行Configure:

运行之后,生成了如下文件:

生成Makefile:

执行Generate之后生成如下文件:

运行make进行编译:

编译完成后,在build目录生成Tutorial.exe,运行Tutorial.exe25就可以看到运行结果:

运行makeinstall安装程序:

运行maketest进行测试:

通过cmaketutorial学习CMake配置方法

http:

//www.cmake.org/cmake/help/cmake_tutorial.html

可以在源代码的Tests/Turorial目录中找到这个手册对应的代码。

1、Step1。

(如果不知道如何使用cmake,以及如何使用编译产生的Turorial.exe,可先看下前面“CMake使用步骤”的说明,它以Step4为例详细介绍了使用过程,Step1的配置可能不够完全,比如无法运行makeinstall,无法运行maketest,但可以参考。

简单的程序编译。

(1)运行GUI的cmake,指定要编译的源代码路径和二进制文件路径(会自动创建)。

(2)点击Configure,配置成功后,再点击Generate。

配置需要选择合适的编译器,虽然我安装了VC2008,但没有配置成功;选择UnixMakefiles,配置成功,它自动找到了DevC++下的gcc.exe等编译器。

(3)在build3目录执行make,就能够编译生成Turorial.exe了。

D:

/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step1/build3>make

LinkingCXXexecutableTutorial.exe

[100%]BuilttargetTutorial

可以运行一下Turorial.exe:

D:

/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step1/build3>Tutorial.exe

Tutorial.exeVersion1.0

Usage:

Tutorial.exenumber

D:

/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step1/build3>Tutorial.exe4

Thesquarerootof4is2

2、Step2

把子目录编译为库,并且链接到最终的可执行文件。

include_directories("${PROJECT_SOURCE_DIR}/MathFunctions") 

add_subdirectory(MathFunctions) #使得子目录MathFunctions也能被编译

#addtheexecutable

add_executable(Tutorialtutorial.cxx)

target_link_libraries(TutorialMathFunctions)

产生makefile:

在GUI上点击Configure,之后Generate还是灰色,再次点击Configure,Generate就可以点击了。

编译:

在build目录运行make,即可开始编译,但是开始会报告sh.exe运行异常,应该是Tools下的UnxUtils的sh.exe与Win7不兼容,发现有如下make文件,估计是它导致的,于是把它重命名,不使用UnxUtils下的make,就OK乐。

D:

/Tools/CMD/UnxUtils/usr/local/wbin/make.exe

编译过程:

D:

/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step2/build>make

[50%]BuildingCXXobjectMathFunctions/CMakeFiles/MathFunctions.dir/mysqrt.cxx

.obj

LinkingCXXstaticlibrarylibMathFunctions.a

[50%]BuilttargetMathFunctions

LinkingCXXexecutableTutorial.exe

[100%]BuilttargetTutorial

3、Step3

支持makeinstall把程序安装到系统指定目录,并且运行一些测试检查它是否能够正常工作。

a、安装时使用的基础目录,由CMAKE_INSTALL_PREFIX指定。

b、可以通过一个很简单的用例检查程序是否运行起来,没有出现异常。

(TurotialRuns只是一个用例名字)

add_test(TutorialRunsTutorial25)

c、macro方式进行多组数据的测试是非常简洁方便的。

#defineamacrotosimplifyaddingtests,thenuseit

macro(do_testargresult)

add_test(TutorialComp${arg}Tutorial${arg})

set_tests_properties(TutorialComp${arg}

PROPERTIESPASS_REGULAR_EXPRESSION${result})

endmacro(do_test)

#doabunchofresultbasedtests

do_test(25"25is5")

do_test(-25"-25is0")

执行makeinstall:

D:

/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build>makeinstall

[50%]"BuilttargetMathFunctions"

[100%]"BuilttargetTutorial"

Installtheproject...

--Installconfiguration:

""

--Installing:

C:

/ProgramFiles/Tutorial/bin/Tutorial.exe

--Installing:

C:

/ProgramFiles/Tutorial/include/TutorialConfig.h

--Installing:

C:

/ProgramFiles/Tutorial/bin/libMathFunctions.a

--Installing:

C:

/ProgramFiles/Tutorial/include/MathFunctions.h

安装结果:

C:

/ProgramFiles/Tutorial>tree/f

C:

.

├─bin

│libMathFunctions.a

│Tutorial.exe

└─include

MathFunctions.h

TutorialConfig.h

执行maketest:

D:

/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build>maketest

Runningtests...

TestprojectD:

/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build

Start1:

TutorialRuns

1/5Test#1:

TutorialRuns.....................Passed0.01sec

Start2:

TutorialComp25

2/5Test#2:

TutorialComp25...................Passed0.01sec

Start3:

TutorialNegative

3/5Test#3:

TutorialNegative.................Passed0.01sec

Start4:

TutorialSmall

4/5Test#4:

TutorialSmall....................Passed0.00sec

Start5:

TutorialUsage

5/5Test#5:

TutorialUsage....................Passed0.00sec

100%testspassed,0testsfailedoutof5

TotalTesttime(real)=0.13sec

修改一个测试用例,让它不过:

修改顶层CMakeLists.txt,然后重新Configure和Generate,然后maketest即可看到结果。

D:

/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build>maketest

Runningtests...

TestprojectD:

/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build

Start1:

TutorialRuns

1/5Test#1:

TutorialRuns.....................Passed0.01sec

Start2:

TutorialComp25

2/5Test#2:

TutorialComp25...................***FailedRequiredregularexpre

ssionnotfound.Regex=[25is3

]0.01sec

Start3:

Tu



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有